2019.12.16 星期一 2108
实际操作
- nginx 配置和 cgi, fast cgi. 和php-fpm
- cd /usr/local/nginx/config/site-enable
nginx.conf 里面有include sites-enabled/*
- 可以配置访问日志,并定义格式;有变量可以使用。access_log,error log;log_format name。
然后可以根据日志,做一些其他操作。比如,pv,访问/接口,报错,统计等。 nginx (php项目)访问502,可能是 root 文件夹权限不够。
chmode 777 /var/www/html通过
service
无法启动;改用nginx指令了。(php-fpm 可以)- 在重启云主机(系统)之后,执行 nginx -t 是OK的,然而在执行 nginx -s reload 的时候报错
nginx: [error] invalid PID number “” in “/run/nginx.pid”
<!–
经过查找,找到http://www.cnblogs.com/yuqianwen/p/4285686.html
需要先执行
nginx -c /etc/nginx/nginx.conf
nginx.conf文件的路径可以从nginx -t的返回中找到。
nginx -s reload
–>
Nginx负载均衡的几种模式:轮询,权重轮询,IP_Hash(可以解决Session失效重新登录问题;配合upstream),Fair,Url_hash
(ajax:post) 访问405: 因为用rewrite 重写了 host/mtouch/project.html 到/var/www/hosts
get请求是没问题的。用ajax 提交post请求报405.
网上有说把,post 转为get 的。但是未采用,担心参数等问题。
最后用proxy 代理,还需要设置头部。- proxy_set_header Host $host; 作用web服务器上有多个站点时,用该参数header来区分反向代理哪个域名。比如下边的代码举例。
- proxy_set_header X-Forwarded-For $remote_addr; 作用是后端服务器上的程序获取访客真实IP,从该header头获取。部分程序需要该功能。
- X-Forwarded-For: 记录访问ip 来源/路径
rewrite 和proxy 的区别
rewrite;
IF判断和内置全局环境变量在nginx中配置proxy_pass代理转发时
如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。
假设下面四种情况分别用 http://192.168.1.1/proxy/test.html 进行访问。
第一种:
location /proxy/ {
proxy_pass http://127.0.0.1/;
}
代理到URL:http://127.0.0.1/test.html
第二种(相对于第一种,最后少一个 / )
location /proxy/ {
proxy_pass http://127.0.0.1;
}
代理到URL:http://127.0.0.1/proxy/test.html
第三种:
location /proxy/ {
proxy_pass http://127.0.0.1/aaa/;
}
代理到URL:http://127.0.0.1/aaa/test.html
第四种(相对于第三种,最后少一个 / )
location /proxy/ {
proxy_pass http://127.0.0.1/aaa;
}
代理到URL:http://127.0.0.1/aaatest.html
- alias。 阅读打卡,vue 单页应用 两个项目,使用同一域名。
开始直接代码到 8088, js,css 文件的content-type错误,导致页面空白。
添加/readingpunch_admin alias 就好了。1
2
3
4
5
6
7
8
9
10service nginx reload # 重新载入nginx配置
## 启动nginx
service nginx restart # 重启
systemctl start nginx
# 设置开机启动
systemctl enable nginx
# 查看nginx 启动状态
systemctl status nginx
# 查看是否监听
ps -tnl | grep 80几个命令
1
2
3
4
5
6
7
8
9
10
11
12
13nginx -v
nginx -V
# 进入到nginx 安装目录
## 启动nginx
./nginx.exe # 前台程序
start nginx # 进入到后台
./nginx.exe -s reload :修改配置后重新加载生效
./nginx.exe -s reopen :重新打开日志文件
./nginx.exe -t -c /path/to/nginx.conf # 测试nginx配置文件是否正确;## 不指定配置文件则为默认
## 关闭nginx:
./nginx.exe -s stop # 快速停止nginx,可能并不保存相关信息
./nginx.exe -s quit # 完整有序的停止nginx,并保存相关信息配置文件
nginx.conf。
设置日志位置。(默认在nginx安装目录下)移到其他位置1
2
3
4
5
6
7
8
9
10
11
12
13error_log D:/var/log/nginx-error.log;
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log D:/var/log/nginx-access.log main;
include vhosts/*.conf
}ssi
SSI:Server Side Include,是一种基于服务端的网页制作技术。它的工作原理是:在页面内容发送到客户端之前,使用SSI指令将文本、图片或代码信息包含到网页中。对于在多个文件中重复出现内容,使用SSI是一种简便的方法,将内容存入一个包含文件中即可,不必在所有文件中重复。通过一个非常简单的语句即可调用包含文件,此语句指示 Web 服务器将内容插入适当网页。
三个参数可以放在http,server,或location作用域下。
1
2
3
4
5location ~ \.shtml$ {
ssi on;
ssi_silent_errors on;
ssi_types text/shtml;
}<!--# command parameter1=value1 parameter2=value2 ... -->
1
2<!--#include file="head.shtml"-->
<!--#include virtual="/site/gc/wap/list/head.shtml"-->file文件名是一个相对路径,该路径相对于使用 #include 指令的文档所在的目录。被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。
virtual文件名是一个web请求路径,当然应该是本服务器上的。可以是绝对或相对路径,但不能通过”..”访问上层路径。